1
เส้นทางสู่การประมวลผล: การทำความเข้าใจเกี่ยวกับตัวควบคุมคอมไพล์เลอร์
AI031Lesson 7
00:00

ผู้จัดการที่ยอดเยี่ยม: ตัวควบคุมคอมไพล์เลอร์

ลองนึกภาพว่า ตัวควบคุมคอมไพล์เลอร์ (เช่น GCC) เป็นเหมือนผู้อ้างอิงหลัก มันจะดำเนินการแปลงซับซ้อนจากโค้ดแหล่งที่มนุษย์สามารถอ่านได้เป็นไฟล์ที่สามารถรันได้ในรูปแบบไบนารีโดยอัตโนมัติ กระบวนการนี้ เรียกว่า เส้นทางสู่การประมวลผลเริ่มต้นที่ เวลาคอมไพล์ และขยายไปถึง เวลาโหลด และ เวลาทำงาน.

โดยการใช้ การคอมไพล์แยกส่วนตัวควบคุมจะประมวลผล main.c และ sum.c แยกกันอย่างอิสระ การเปลี่ยนแปลงในโมดูลหนึ่งไม่จำเป็นต้องคอมไพล์โปรเจกต์ทั้งหมดใหม่ เพียงแค่ไฟล์ที่ถูกแก้ไขเท่านั้นที่จะผ่านขั้นตอนก่อนคอมไพล์ (cpp) คอมไพล์เลอร์ (cc1) และตัวแปลง (as) ก่อนที่จะถึงขั้นตอน ตัวเชื่อมโยง (ld) จะรวมผลลัพธ์ที่ได้มาเป็น ไฟล์วัตถุที่สามารถปรับตำแหน่งได้.

main.ccpp/cc1/asmain.osum.ccpp/cc1/assum.oldprogมุมมองฮาร์ดแวร์: การจัดวางแคชที่ 0x064C ที่อยู่: 0 0110 0100 11xx | สายแคชขนาด 32 ไบต์ แท็ก: 0 0110 01เซ็ต: 00ออฟเฟต: 11xxการวิเคราะห์รูปแบบการเข้าถึงแบบลำดับที่ 1 ช่วยให้แน่ใจว่าการไหลเวียนของแคชระดับ 1 ทำได้อย่างมีประสิทธิภาพ

ประสิทธิภาพและการจัดลำดับหน่วยความจำ

การตัดสินใจจัดวางของตัวเชื่อมโยงสำหรับ grid[0][0] หรือ src[0][0] ส่งผลโดยตรงต่อ อัตราการไหลเวียน และ ความหน่วงเวลา. โดยการจัดเรียงข้อมูลให้อยู่ใน สายแคชขนาด 32 ไบต์ตัวควบคุมจะช่วยสร้างรูปแบบการเข้าถึง รูปแบบการเข้าถึงแบบลำดับที่ 1ลดการเกิด การพลาดเมื่อเริ่มต้น และหลีกเลี่ยง การลบออกเนื่องจากการสแกนตามคอลัมน์. ในรหัสที่มีประสิทธิภาพสูงขั้นสูง การขนานแบบปลดล็อกวงจร ($4 \times 4$ วงจรที่ถูกปลดล็อก) ช่วยซ่อน การจัดวางจากหน่วยความจำหลักไปยังแคช ความหน่วงเวลา โดยการเพิ่มประสิทธิภาพรอบการจับเวลาของนาฬิกา (0x32, 0x1, 0x4, 0x51)

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>